#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>

char buffer[33]; //用于存放转换好的十六进制字符串，可根据需要定义长度

char *inttohex(int aa)
{
    static int i = 0;
    if (aa < 16) //递归结束条件
    {
        if (aa < 10) //当前数转换成字符放入字符串
            buffer[i] = aa + '0';
        else
            buffer[i] = aa - 10 + 'A';
        //buffer[i + 1] = '\0'; //字符串结束标志
    }
    else
    {
        inttohex(aa / 16); //递归调用
        i++;               //字符串索引+1
        aa %= 16;          //计算当前值
        if (aa < 10)       //当前数转换成字符放入字符串
            buffer[i] = aa + '0';
        else
            buffer[i] = aa - 10 + 'A';
    }
    return (buffer);
}

int main()
{
    int s = 0, i, len;
    char str[1000];
    scanf("%s", str);

    len = strlen(str);

    for (i = 0; i < len; i++) //循环检查输入二进制数的1
    {
        if (str[i] == '1') //如果为1，开始计算转换为十进制
            s += pow(2, len - i - 1);
        continue;
    }
    //十进制转十六进制
    inttohex(s);
    
    for (size_t i = 0; buffer[i]; i++)
    {
        printf("%c", buffer[i]);
    }

}
